﻿Public Class CalismaIzniUzatmaFormu : Inherits Process

	Public IlkTarih As Date
	Public Karne(3) As KarneInfo
	Public sno As String, kimlik As String

	Dim YatirimDurumu As YatirimDurumu
	Dim CalismaIzniDurumu As CalismaIzniDurumu
	Dim GYSDurumu As GYSDurumu

	Public Overrides Sub GenericEvent(ByVal e As ProcessEventArgs)
		Select Case e.EventType
			Case EventType.Initialize
				Start("Çalışma izni uzatma formu", "Sigortalı bilgilerini girin.")
				AddSigortali()
				StartBody()
				AddLayout()
			Case EventType.ValidateForm
				KontrolEt()
				sno = Input("sigortali")
				Help = "Değerlendirme bilgilerini gözden geçirip devam butonuna tıklayın."
				Buttons.Show("Button.Next.Reset")
				e.Result = True
		End Select
	End Sub

	Sub KontrolEt()
		'Çalışma izni
		Layout.AddHeader("izin", "Çalışma izni bilgileri")
		Rs = Sigortali.CalismaIzni(Remote, sno)
		If Rs.EOF Then
			Layout.AddRow("izin", "[x]Çalışma izni kaydı yoktur.")
		ElseIf Remote.SysDate.AddMonths(-3) > Rs("izinsontar") Then
			Layout.AddRow("izin", "[x]Çalışma izninin bitiş tarihinden sonra üç aydan fazla süre geçmiştir (" & DMY(Rs("izinsontar")) & ").")
		Else
			Layout.AddRow("izin", "[/]Son çalışma izni " & DMY(Rs("izinbastar")) & " - " & DMY(Rs("izinsontar")) & " tarihleri arasındadır.")
		End If
		'Dim SonYatirimTarihi As Date = Sigortali.SonYatirimTarihi(Remote, Input("Sigortali"))
		'Dim SonRapor As Recordset = Sigortali.SonRapor(Remote, Input("Sigortali"))
		'Dim SonRaporTarihi As Date = EmptyDate
		'Dim Raporlu As Boolean = False
		''Dim Rs As Recordset = Sigortali.SnoAra(Remote, Input("Sigortali"))
		'Dim Rsg As Recordset = Sigortali.GecindirmekleYukumluListesi(Remote, Input("Sigortali"))
		'Dim Rsc As Recordset = Sigortali.CalismaIzni(Remote, Input("Sigortali"))
		'Dim Rsd As Recordset = Sigortali.GeciciIsgoremezlik(Remote, Input("Sigortali"), Today)
		'Dim CalismaIzniTarihi As Date = Today.AddMonths(12)
		'Dim Onizin As Boolean = False
		'For i As Integer = 0 To 3
		'	Karne(i) = New KarneInfo
		'Next
		'IlkTarih = Today
		'If Not Rsc.EOF Then
		'	CalismaIzniTarihi = Rsc("izinsontar")
		'	Onizin = Rsc("onizin") = "Evet"
		'End If
		''Statü kontrolü
		'Dim Statu As Statu = Sigortali.Statu(Remote, Input("Sigortali"))
		'Select Case Statu
		'	Case SSD.Statu.Aday, SSD.Statu.EvHanimi, SSD.Statu.IstegeBagli
		'		Layout.AddHeader("statu", "Sigortalının statüsü")
		'		Select Case Statu
		'			Case SSD.Statu.Aday : Layout.Headers("statu").AddRow("[x]Devlet memuru olduğu için karne verilemez.")
		'			Case SSD.Statu.EvHanimi : Layout.Headers("statu").AddRow("[x]Ev hanımı olduğu için karne verilemez.")
		'			Case SSD.Statu.IstegeBagli : Layout.Headers("statu").AddRow("[x]İsteğe bağlı olduğu için karne verilemez.")
		'		End Select
		'		Exit Sub
		'End Select
		'Dim DevletCalisani As Boolean = Sigortali.DevletCalisani(Remote, Input("Sigortali"))
		''Yatırım durumu
		'Dim Ay As Integer = 6
		'Dim EczaneAy As Integer = If(Statu = SSD.Statu.Isveren, 2, 3)
		'Dim KarneyeEsasTarih As Date = SonYatirimTarihi
		'If Not SonRapor.EOF Then SonRaporTarihi = SonRapor("bittar")
		'If SonRaporTarihi > KarneyeEsasTarih Then
		'	KarneyeEsasTarih = SonRaporTarihi.AddDays(-SonRaporTarihi.Day + 1)
		'End If
		'Layout.AddHeader("prim", "Sigortalının yatırım durumu")
		'If KarneyeEsasTarih.AddMonths(Ay + 1).AddDays(-1) <= Today Then
		'	Dim SonProblemliYatirimTarihi As Date = Sigortali.SonProblemliYatirimTarihi(Remote, Input("Sigortali"))
		'	If SonProblemliYatirimTarihi.AddMonths(Ay + 1).AddDays(-1) > Today Then
		'		YatirimDurumu = SSD.YatirimDurumu.ProblemliYatirimiVar
		'		Layout.Headers("prim").AddRow("[!]Sigortalının problemli yatırımı vardır. Kontrol edin.")
		'	ElseIf Sigortali.SaglikKarnesi.ProblemliYatirimKontroluKimlik(Remote, Input("Sigortali"), Today.AddMonths(-Ay - 1).AddDays(-1)) Then
		'		YatirimDurumu = SSD.YatirimDurumu.KimlikleYatirimiVar
		'		Layout.Headers("prim").AddRow("[!]Sigortalının kimliğiyle yapılan problemli yatırım vardır. Kontrol edin.")
		'	ElseIf Sigortali.SaglikKarnesi.ProblemliYatirimKontroluIsim(Remote, Input("Sigortali"), Today.AddMonths(-Ay - 1).AddDays(-1)) Then
		'		YatirimDurumu = SSD.YatirimDurumu.IsimleYatirimiVar
		'		Layout.Headers("prim").AddRow("[!]Sigortalının ismiyle yapılan problemli yatırım vardır. Kontrol edin.")
		'	Else
		'		If SonYatirimTarihi = EmptyDate Then
		'			YatirimDurumu = SSD.YatirimDurumu.Yok
		'			Layout.Headers("prim").AddRow("[x]Sigortalının yatırımı yoktur.")
		'		ElseIf SonYatirimTarihi.AddMonths(Ay + 1).AddDays(-1) <= Today Then
		'			YatirimDurumu = SSD.YatirimDurumu.GuncelYatirimiYok
		'			Layout.Headers("prim").AddRow("[x]Sigortalının güncel yatırımı yoktur (Son yatırım: " & DMY(SonYatirimTarihi) & ").")
		'		End If
		'	End If
		'	Karne(0).Durum = KarneDurumu.YetersizYatirimiOlduguIcinVerilemez
		'	Karne(1).Durum = KarneDurumu.YetersizYatirimiOlduguIcinVerilemez
		'	Karne(2).Durum = KarneDurumu.YetersizYatirimiOlduguIcinVerilemez
		'	Karne(3).Durum = KarneDurumu.YetersizYatirimiOlduguIcinVerilemez
		'Else
		'	YatirimDurumu = SSD.YatirimDurumu.Var
		'	Karne(0).Durum = KarneDurumu.Verilebilir
		'	Karne(1).Durum = KarneDurumu.Verilebilir
		'	Karne(2).Durum = KarneDurumu.Verilebilir
		'	Karne(3).Durum = KarneDurumu.Verilebilir
		'	Karne(0).Tarih = KarneyeEsasTarih.AddMonths(Ay + 1).AddDays(-1)
		'	Karne(1).Tarih = KarneyeEsasTarih.AddMonths(Ay - EczaneAy + 1).AddDays(-1)
		'	Layout.Headers("prim").AddRow("[/]Sigortalının son yatırımı " & DMY(SonYatirimTarihi) & " tarihindedir.")
		'	If SonRaporTarihi >= KarneyeEsasTarih Then
		'		Select Case SonRapor("tur")
		'			Case "has" : Layout.Headers("prim").AddRow("[!]" & DMY(SonRaporTarihi) & " tarihine kadar hastalık geçici işgöremezlik raporu vardır.")
		'			Case "isk" : Layout.Headers("prim").AddRow("[!]" & DMY(SonRaporTarihi) & " tarihine kadar iş kazası geçici işgöremezlik raporu vardır.")
		'			Case "ana" : Layout.Headers("prim").AddRow("[!]" & DMY(SonRaporTarihi) & " tarihine kadar analık geçici işgöremezlik raporu vardır.")
		'			Case "isz" : Layout.Headers("prim").AddRow("[!]" & DMY(SonRaporTarihi) & " tarihine kadar işsizlik ödeneği vardır.")
		'		End Select
		'	End If
		'	If Statu = SSD.Statu.Isveren Then Layout.Headers("prim").AddRow("[i]Sigortalı işveren statüsündedir (Eczane karnesi 4 aya kadar alınabilir).")
		'	If Len(Input("Sigortali")) = 9 Then
		'		Dim GunSayisi As Integer = Sigortali.ToplamYatirim(Remote, Input("Sigortali"))
		'		If GunSayisi < 60 Then
		'			Layout.Headers("prim").AddRow("[x]Sigortalının toplam 60 gün yatırımı yoktur (" & Trim(GunSayisi) & " gün).")
		'			Karne(0).Durum = KarneDurumu.YetersizYatirimiOlduguIcinVerilemez
		'			Karne(1).Durum = KarneDurumu.YetersizYatirimiOlduguIcinVerilemez
		'			Karne(2).Durum = KarneDurumu.YetersizYatirimiOlduguIcinVerilemez
		'			Karne(3).Durum = KarneDurumu.YetersizYatirimiOlduguIcinVerilemez
		'		End If
		'	End If
		'	If DevletCalisani Then
		'		Layout.Headers("prim").AddRow("[!]Sigortalı devlet çalışanıdır.")
		'		Karne(0).Durum = KarneDurumu.DevletCalisaniOlduguIcinVerilemez
		'		Karne(2).Durum = KarneDurumu.DevletCalisaniOlduguIcinVerilemez
		'	End If
		'	If Karne(1).Tarih <= Today Then
		'		Layout.Headers("prim").AddRow("[x]Sigortalının eczane karnesi alacak kadar güncel yatırımı yoktur.")
		'		Karne(1).Durum = KarneDurumu.YetersizYatirimiOlduguIcinVerilemez
		'		Karne(3).Durum = KarneDurumu.YetersizYatirimiOlduguIcinVerilemez
		'	End If
		'End If
		''Çalışma izni durumu
		'Layout.AddHeader("calisma", "Sigortalının çalışma izni durumu")
		'If Len(Trim(Rs("kimlik"))) = 6 And Rs("kimlik") < "6" Then
		'	CalismaIzniDurumu = SSD.CalismaIzniDurumu.GerekYok
		'	Layout.Headers("calisma").AddRow("[-]Vatandaş olduğu için çalışma izni gerekliliği yoktur.")
		'ElseIf Rsc.EOF Then
		'	CalismaIzniDurumu = SSD.CalismaIzniDurumu.Yok
		'	Layout.Headers("calisma").AddRow("[x]Çalışma izni yoktur.")
		'ElseIf Onizin Then
		'	CalismaIzniDurumu = SSD.CalismaIzniDurumu.Onizinli
		'	Layout.Headers("calisma").AddRow("[x]Önizinli olduğu için karne verilemez.")
		'ElseIf CalismaIzniTarihi <= Today Then
		'	CalismaIzniDurumu = SSD.CalismaIzniDurumu.SuresiDoldu
		'	Layout.Headers("calisma").AddRow("[x]Çalışma izin süresi dolmuştur. (Tarih: " & DMY(CalismaIzniTarihi) & ").")
		'Else
		'	If CalismaIzniTarihi > Karne(0).Tarih Then
		'		CalismaIzniDurumu = SSD.CalismaIzniDurumu.Var
		'		Layout.Headers("calisma").AddRow("[/]Çalışma izni " & DMY(CalismaIzniTarihi) & " tarihine kadar geçerlidir.")
		'	Else
		'		CalismaIzniDurumu = SSD.CalismaIzniDurumu.SuresiGecmekUzere
		'		Karne(0).Tarih = CalismaIzniTarihi
		'		Layout.Headers("calisma").AddRow("[!]Çalışma izni " & DMY(CalismaIzniTarihi) & " tarihine kadar geçerlidir.")
		'		If CalismaIzniTarihi < Karne(1).Tarih Then Karne(1).Tarih = CalismaIzniTarihi
		'	End If
		'End If
		''Geçindirmekle yükümlü olduğu yakınları
		'Layout.AddHeader("gys", "Sigortalının geçindirmekle yükümlü olduğu yakınları")
		'If Rsg.EOF Then
		'	Layout.Headers("gys").AddRow("[-]Sigortalının geçindirmekle yükümlü olduğu yakını yoktur.")
		'	GYSDurumu = SSD.GYSDurumu.Yok
		'	Karne(2).Durum = KarneDurumu.KesinlikleVerilemez
		'	Karne(3).Durum = KarneDurumu.KesinlikleVerilemez
		'Else
		'	GYSDurumu = SSD.GYSDurumu.Var
		'	Karne(2).Tarih = Karne(0).Tarih
		'	Karne(3).Tarih = Karne(1).Tarih
		'	Layout.Headers("gys").AddRow("Sigortalının " & Rsg.Rows.Count & " adet geçindirmekle yükümlü olduğu yakını vardır.")
		'	Do Until Rsg.EOF
		'		Dim Ad As String = Trim(Rsg("adi")) & " (" & DMY(Rsg("dtar")) & " - " & Trim(Rsg("yakinlik")) & ")"
		'		If Rsg("sontar") < IlkTarih Then
		'			Layout.Headers("gys").AddRow("[x]" & Ad & " geçindirmekle yükümlülük süresi dolduğu için karnede yer alamaz (Son tarih: " & DMY(Rsg("sontar")) & ").")
		'		ElseIf Rsg("sontar") < Karne(0).Tarih Then
		'			If Rsg("sontar") < Karne(2).Tarih Then Karne(2).Tarih = Rsg("sontar")
		'			If Rsg("sontar") < Karne(3).Tarih Then Karne(3).Tarih = Rsg("sontar")
		'			Layout.Headers("gys").AddRow("[!]" & Ad & " karnede yer alabilir ama geçindirmekle yükümlülük süresi dolmak üzeredir (Son tarih: " & DMY(Rsg("sontar")) & ").")
		'		Else
		'			Layout.Headers("gys").AddRow("[/]" & Ad & " karnede yer alabilir.")
		'		End If
		'		Rsg.MoveNext()
		'	Loop
		'End If
		''Son durum
		'Dim DetayliRapor As Boolean = True
		'Layout.AddHeader("eval", "Son değerlendirme")
		'If DetayliRapor Then
		'	Select Case CalismaIzniDurumu
		'		Case SSD.CalismaIzniDurumu.Onizinli, SSD.CalismaIzniDurumu.SuresiDoldu, SSD.CalismaIzniDurumu.Yok
		'			If YatirimDurumu = SSD.YatirimDurumu.Var Then
		'				Layout.Headers("eval").AddRow("[x]Çalışma izni sorunlarından dolayı hastane ya da eczane karnesi alamaz.")
		'			Else
		'				Layout.Headers("eval").AddRow("[x]Hem yatırım, hem de çalışma izni sorunlarından dolayı hastane ya da eczane karnesi alamaz.")
		'			End If
		'			DetayliRapor = False
		'	End Select
		'End If
		'If DetayliRapor Then
		'	Select Case YatirimDurumu
		'		Case SSD.YatirimDurumu.ProblemliYatirimiVar, SSD.YatirimDurumu.KimlikleYatirimiVar, SSD.YatirimDurumu.IsimleYatirimiVar
		'			Layout.Headers("eval").AddRow("[x]Yatırım sorunlarından dolayı karne alamaz, ama problemli yatırımı vardır.")
		'			DetayliRapor = False
		'		Case SSD.YatirimDurumu.Yok, SSD.YatirimDurumu.GuncelYatirimiYok
		'			Layout.Headers("eval").AddRow("[x]Yatırım sorunlarından dolayı hastane ya da eczane karnesi alamaz.")
		'			DetayliRapor = False
		'	End Select
		'End If
		'If DetayliRapor Then
		'	'Önceki karneleri
		'	For i As Integer = 0 To 3
		'		Dim Tanim As String = Choose(i + 1, "Hastane karnesi (kendisi için)", "Eczane karnesi (kendisi için)", "Hastane karnesi (yakınları için)", "Eczane karnesi (yakınları için)") & ": "
		'		If i > 1 And GYSDurumu = SSD.GYSDurumu.Yok Then
		'			Karne(i).Durum = KarneDurumu.KesinlikleVerilemez
		'		Else
		'			If Karne(i).Durum = KarneDurumu.DevletCalisaniOlduguIcinVerilemez Then
		'				Layout.Headers("eval").AddRow("[x]" & Tanim & "Devlet çalışanı olduğu için karne alamaz.")
		'				Karne(i).Durum = KarneDurumu.KesinlikleVerilemez
		'			ElseIf Karne(i).Durum = KarneDurumu.YetersizYatirimiOlduguIcinVerilemez Then
		'				Layout.Headers("eval").AddRow("[x]" & Tanim & "Yatırım sorunlarından dolayı karne alamaz.")
		'			Else
		'				Rs = Sigortali.SonKarne(Remote, Input("Sigortali"), i)
		'				If Not Rs.EOF AndAlso Rs("bittar") > IlkTarih Then
		'					Karne(i).Tarih = Rs("bittar")
		'					Layout.Headers("eval").AddRow("[!]" & Tanim & " En son " & DMY(Karne(i).Tarih) & " tarihine kadar karne alabilir çünkü daha önce karne aldı.")
		'				Else
		'					If i > 1 AndAlso Karne(i).Tarih < Karne(i - 2).Tarih Then
		'						Layout.Headers("eval").AddRow("[!]" & Tanim & DMY(Karne(i).Tarih) & " tarihine kadar karne alabilir ama yakınlarından biri ya da birkaçının yükümlülük süresi dolmak üzeredir.")
		'					Else
		'						Layout.Headers("eval").AddRow("[/]" & Tanim & DMY(Karne(i).Tarih) & " tarihine kadar karne alabilir.")
		'					End If
		'				End If
		'			End If
		'		End If
		'	Next
		'End If
	End Sub

	Public Overrides Sub DialogEvent(e As ProcessEventArgs)
		Select Case e.EventType
			Case EventType.Initialize
				Modal.Start("Karne Onayı", "Verilecek karneleri belirtin.")
				Modal.AddLabel("Karne Türü", "b")
				Modal.AddLabel("Verilecek mi", "b;align=c")
				Modal.AddLabel("Baş.Tarihi", "b;align=c")
				Modal.AddLabel("Bit.Tarihi", "b;align=c;nl")
				For i As Integer = 0 To 3
					Modal.AddLabel(Choose(i + 1, "Hastane karnesi (kendisi için)", "Eczane karnesi (kendisi için)", "Hastane karnesi (yakınları için)", "Eczane karnesi (yakınları için)"))
					Modal.AddCombo("onay" & Trim(i), "", "E,Evet|H,Hayır", "width=8", "H")
					Modal.AddDate("tarih1" & Trim(i), "", "", IlkTarih.YMD)
					Modal.AddDate("tarih2" & Trim(i), "", "nl", Karne(i).Tarih.YMD)
				Next
			Case EventType.Shown
				For i As Integer = 0 To 3
					Modal.Enabled("tarih1" & Trim(i) & ",tarih2" & Trim(i)) = False
					Modal.Enabled("onay" & Trim(i)) = Karne(i).Durum <> KarneDurumu.KesinlikleVerilemez
					Modal.Input("onay" & Trim(i)) = "H"
				Next
				Modal.Buttons.Show("Save")
			Case EventType.Change
				If e.Name.Contains("onay") Then Modal.Enabled(e.Name.Replace("onay", "tarih2")) = Modal.Input(e.Name) = "E"
			Case EventType.Save
				For i As Integer = 0 To 3
					If Modal.Input("onay" & Trim(i)) = "E" Then Sigortali.SaglikKarnesi.Kaydet(Remote, sno, kimlik, i, Modal.Input("tarih1" & Trim(i)), Modal.Input("tarih2" & Trim(i)), User.Kaykul)
				Next
				Modal.Close()
				ResetForm(True)
				Notify("Karne bilgileri kaydedilmiştir.")
		End Select
	End Sub

End Class
